#include <iostream>
using namespace std;
#include <vector>

#if 0
	string 		保存字符的数组  自动拓展容量.
	vector		保存任意类型	自动拓展容量
		1 初始化
		2 增加元素
			push_back			尾部添加
			insert 				指定位置添加
		3 删除
			pop_back			尾部删除
			erase				指定位置删除
		4 修改
			operator []			下标修改
			vector<type>::iterator	迭代器修改
		5 查找
			遍历
			下标
			迭代器(推荐)
				cbegin 		cend			const迭代器 不能通过迭代器去修改容器的值
				rbegin 		rend			reverse反向迭代器
				crbegin 	crend			const_reverse const反向迭代器
				begin 		end				普通迭代器
		6 排序	
			sort


		输入10个数字，存入vector中, 遍历查找容器中的所有素数，并保存到另一个容器中，
		最后将所有的素数升序输出.


#endif

int main(void)
{
		// constructors used in the same order as described above:
		vector<int> first;           // 1 定义一个保存整形的vector
		vector<int> second (4,100);  // 2 定义一个保存整形的vector ,初始化为4个100
		//[x, y)
		vector<int> third (second.begin(),second.end());  // iterating through second
		vector<int> fourth  = third;                       // a copy of third

		// the iterator constructor can also be used to construct from arrays:
		int myints[] = {16,2,77,29};
		//[x, y)
		vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

		fifth.push_back(100);
		
		vector<int>::iterator it = fifth.begin();
		fifth.insert(it, 99);		//添加到it的前一个位置

		//99 16 2 77 29 100
		fifth.pop_back();

		//99 16 2 77 29 
		fifth[2] = 22;
		it = fifth.begin() + 2;
		*it = 222;


		if(first.empty()){
			cout << "first is empty..." << endl;
		}
		for(int i = 0; i < fifth.size(); i++){
			cout << fifth[i] << " ";
		}
		cout << endl;
		for(vector<int>::reverse_iterator it = fifth.rbegin(); it != fifth.rend(); ++it){
			//*it = 100;
			cout << *it << " ";
		}
		cout << endl;

	return 0;
}
